package cn.harry.cabinet.server.dto.user

import cn.harry.cabinet.model.entity.User
import cn.harry.cabinet.model.enums.Gender
import cn.harry.cabinet.model.enums.UserStatus
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.Serializable

/**
 * 用户响应DTO - 继承User实体
 */
@InternalSerializationApi
@Serializable
data class UserResponse(
    /** 主键 */
    val id: Long,
    /** 姓名 */
    val name: String,
    /** 员工编号 */
    val employeeId: String,
    /** 手机号 */
    val phoneNumber: String,
    /** 岗位 */
    val position: String,
    /** 性别 */
    val gender: Gender,
    /** 状态 启用、禁用 */
    val status: UserStatus,
    /** 特征码 */
    val featureCode: String,
    /** 密码（4位数字） */
    val password: String,
    /** 创建时间 */
    val createTime: Long,
    /** 更新时间 */
    val updateTime: Long
) {
    /**
     * 从User实体创建UserResponse
     */
    companion object {
        fun fromUser(user: User): UserResponse {
            return UserResponse(
                id = user.id,
                name = user.name,
                employeeId = user.employeeId,
                phoneNumber = user.phoneNumber,
                position = user.position,
                gender = user.gender,
                status = user.status,
                featureCode = user.featureCode,
                password = user.password,
                createTime = user.createTime.time,
                updateTime = user.updateTime.time
            )
        }

        /**
         * 从User实体列表创建UserResponse列表
         */
        fun fromUserList(users: List<User>): List<UserResponse> {
            return users.map { fromUser(it) }
        }
    }
}